package com.jdk.demo.unsafe.simple;

import java.lang.reflect.Field;

public class Password {

	/**一般密码都要存成byte[]或者char[]数组，为什么呢？？
因为我们使用完了，可以直接将他们设为null。但如果密码存在String中，将其设为null，密码实际任然存在在内存中，等到GC后，才能被释放，就很不安全。
所以当我们把密码字段存储在String中时，在密码字段使用完之后，最安全的做法是：将它的值覆盖。
很多不再需要的，但是又是比较机密的对象，想快点消灭证据，都可以通过这种方法来消除。
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		String password = "123";
		Field stringValue = String.class.getDeclaredField("value");
	    stringValue.setAccessible(true);
	    byte[] mem = (byte[]) stringValue.get(password);
	    for (int i = 0; i < mem.length; i++) {
	        mem[i] = 10;
	    }
	}

}
